package com.topn;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.mapreduce.Partitioner;

// 分区器
public class TPartitioner extends Partitioner<Tkey, IntWritable> {

    @Override
    public int getPartition(Tkey tkey, IntWritable intWritable, int numPartitions) {
        int year = tkey.getYear();
        int month = tkey.getMonth();
        // int day = tkey.getDay();

        /*
        数据倾斜：
        每个分区拿到的数据量不同，差别比较悬殊
        0 1000条
        1 20000条
        解决数据倾斜思路就是让数据计算分区的逻辑尽量的分散到不同的分区
         */
        return ("" + year + month).hashCode() % numPartitions;
    }
}

